/*
 * @Description: 接口
 * @notes: 定义规范类
 * @Author: 台火山
 * @Date: 2024-03-24 15:19:39
 * @LastEditors: 台火山
 * @LastEditTime: 2024-03-24 15:50:25
 */
(function () {
    // 描述2一个对象的类型
    type myType = {
        name: string,
        age: number,
    }


    /**
     *  接口用来定义一个类结构
     *      用来定义一个类中应该包含哪些属性和方法
     *      接口也可以定成类型声明去使用(合并)
     */
    interface myInterface {
        name: string;
        age: number;
    }

    interface myInterface {
        gender: string
    }

    // const obj: myType = {
    //     name: '11',
    //     age: 123
    // }

    const obj: myInterface = {
        name: '11',
        age: 123,
        gender: '男'
    }

    /**
     *  接口可以在定义类的时候限制类的结构
     *      接口中的所有的属性都不能有实际的值
     *      接口只定义对象的结构，而不考利实际值
     *          在接口中所有的方法都是抽象方法
    */

    interface myInter {
        name: string,
        sayHello(): void
    }

    /**
     *  定义类时，可以使类去实现一个接口
     *      实现接口就是使类满足接口的要求
    */
    class myClass implements myInter {
        name: string;

        constructor(name: string) {
            this.name = name
        }

        sayHello(): void {
            console.log('大家好');

        }

    }
})();